package com.jhxy.algorithm.removeduplicates;

/**
 * 删除有序数组中的重复项
 */
public class RemoveDuplicates {


    public static void main(String[] args) {
        InputForRemoveDuplicates inputs = new InputForRemoveDuplicates("1,2,3,3,3,4,5");
        RemoveDuplicates ins = new RemoveDuplicates();
        int length = ins.removeDuplicates(inputs.nums);
        System.out.println(length);
        System.out.print("[");
        for (int i = 0; i < length; i++) {
            System.out.print(inputs.nums[i]);
            if (i < length - 1) {
                System.out.print(",");
            }
        }
        System.out.print("]");
    }

    /**
     * 移除有序数组中重复的元素，并返回重复元素个数
     *
     * @param nums 有序数据
     * @return 去重后的数组元素个数
     */
    private int removeDuplicates(int[] nums) {
        //返回的去重后数据元素个数，初始化
        int retLength = 0;
        int curLength = nums.length;

        if (curLength == 0) {
            return retLength;
        } else {
            //因为nums不为空,那么第一个元素是肯定需要的
            retLength++;
        }

        //开始循环遍历有序数组,进行判断
        for (int i = 0; i < curLength - 1; i++) {
            if (nums[i] != nums[i + 1]) {
                //此时,nums[i]的元素，就是需要的元素
                retLength++;
                //那么就将nums[i+1]向前移动，具体移动几位，则是要根据新数据的长度，即retLength
                nums[retLength - 1] = nums[i+1];
            }
        }

        return retLength;
    }
}

